/**
  ************************************* Copyright ******************************
  * FileName   : log.h
  * Version    : v1.0
  * Author     : yychao
  * Date       : 2023-12-01
  * Description:
  * Function List:
  	1. ....
  	   <version>:
  <modify staff>:
  		  <data>:
   <description>:
  	2. ...
  ******************************************************************************
 */

#ifndef __LOG_H_
#define __LOG_H_

#include "main.h"
void log_printf(char *fmt, ...);
#define XSHELL 1
#if(XSHELL)
#define CONSOLE_CLEAR()			log_printf("\x1b[2J\x1b[H")
#define CONSOLE_RED()			log_printf("\x1b[31m")
#define CONSOLE_GREEN()			log_printf("\x1b[32m")
#define CONSOLE_YELLOW()		log_printf("\x1b[33m")
#define CONSOLE_BLUE()			log_printf("\x1b[34m")
#define CONSOLE_MAGENTA()		log_printf("\x1b[35m")
#define CONSOLE_CYAN()			log_printf("\x1b[36m")
#define CONSOLE_RESET()			log_printf("\x1b[0m")
#else
#define CONSOLE_CLEAR()
#define CONSOLE_RED()
#define CONSOLE_GREEN()
#define CONSOLE_YELLOW()
#define CONSOLE_BLUE()
#define CONSOLE_MAGENTA()
#define CONSOLE_CYAN()
#define CONSOLE_RESET()
#endif


#define LOG_FILE()	CONSOLE_CYAN();log_printf("LOG_FILE %s \r\n",__FILE__);CONSOLE_RESET()
#define LOG_LINE()	CONSOLE_CYAN();log_printf("LOG_LINE %d \r\n",__LINE__);CONSOLE_RESET()
#define LOG_FUNC()	CONSOLE_CYAN();log_printf("LOG_FUNC %s \r\n",__FUNCTION__);CONSOLE_RESET()


#define LOG_LEVEL LOG_DEBUG_V


#define LOG_NONE_V		0
#define LOG_ERROR_V		1
#define LOG_WARNING_V	2
#define LOG_INFO_V		3
#define LOG_DEBUG_V		4


#if	LOG_LEVEL >= LOG_ERROR_V
#define LOG_ERROR(fmt, ...)	CONSOLE_RED();log_printf(fmt, ##__VA_ARGS__);CONSOLE_RESET()
#define LOG_KEY(fmt, ...)	CONSOLE_MAGENTA();log_printf(fmt, ##__VA_ARGS__);CONSOLE_RESET()
#define LOG_IMPORT(fmt, ...)	CONSOLE_GREEN();log_printf(fmt, ##__VA_ARGS__);CONSOLE_RESET()
#else
#define LOG_ERROR(fmt, ...)	{}
#endif

#if	LOG_LEVEL >= LOG_WARNING_V
#define LOG_WARNING(fmt, ...)	CONSOLE_YELLOW();log_printf(fmt, ##__VA_ARGS__);CONSOLE_RESET()
#else
#define LOG_WARNING(fmt, ...)	{}
#endif


#if	LOG_LEVEL >= LOG_INFO_V
#define LOG_INFO(fmt, ...)	CONSOLE_CYAN();log_printf(fmt, ##__VA_ARGS__);CONSOLE_RESET()
#else
#define LOG_INFO(fmt, ...)	{}
#endif

#if	LOG_LEVEL >= LOG_DEBUG_V
#define LOG_DEBUG(fmt, ...)	log_printf(fmt, ##__VA_ARGS__);
#else
#define LOG_DEBUG(fmt, ...)	{}
#endif

#endif








